package IO;

import java.io.*;
import java.util.*;

public class Demo4_BufferStream {

    /**
     * 测试字节缓冲流
     */
    public static void byteBuffer() throws Exception {
        //创建直接接触资源的 节点流
        FileInputStream fis = new FileInputStream("E:/01-备课/01-一阶段/01-javaSE/02-课程资料/01-安装包/jdk-8u341-windows-x64.exe");
        FileOutputStream fos = new FileOutputStream("D://copy.exe");

        //在节点流的基础上封装一个缓冲流，以提供更优的性能和更方便的方法
        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos);


        long startTime = System.currentTimeMillis();

        //定义一个缓冲数组，一般的长度是1k-2k
        byte[] temp = new byte[1024];
        int length;

        //循环读取的同时写入目标路径
        while((length = bis.read(temp)) != -1){
            bos.write(temp,0,length);
        }

        long endTime = System.currentTimeMillis();
        System.out.println("耗时："+(endTime-startTime));


    }

    /**
     * 测试字符缓冲流
     */
    public static void charBuffer() throws Exception {

        //创建基础的字符输入输出流
        FileReader fr = new FileReader("D://test.txt");
        FileWriter fw = new FileWriter("D://copy.txt");

        //以节点流为基础，封装字符缓冲输入输出流
        BufferedReader br = new BufferedReader(fr);
        BufferedWriter bw = new BufferedWriter(fw);

        String temp;
        while((temp=br.readLine())!=null){
            bw.write(temp);
            bw.newLine();
        }

        bw.flush();
        bw.close();
        br.close();
        fw.close();
        fr.close();
    }

    /**
     * 6.你说你的程序叫简单，我说我的代码叫诗篇
     * 1.一想到你我就哦豁豁豁豁豁豁豁豁豁豁....哦个头啊，完全不理人家受得了受不了
     * 8.Just 简单你和我 ，Just 简单程序员
     * 3.约了地点却忘了见面 ，懂得寂寞才明白浩瀚
     * 5.沉默是最大的发言权
     * 2.总是喜欢坐在电脑前， 总是喜欢工作到很晚
     * 7.向左走 又向右走，我们转了好多的弯
     * 4.你从来就不问我，你还是不是那个程序员
     */
    public static void sortLineNum() throws Exception {

        Map<Integer, String> lineNumMap = new TreeMap<>();

        BufferedReader br = new BufferedReader(new FileReader("D://test.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("D://copy.txt"));

        String temp;
        while((temp = br.readLine())!=null){
            //split的参数要的是一个正则表达式，.表示的是任意字符，所以需要做转义
            String[] lineNumAndContext = temp.split("\\.");
            lineNumMap.put(Integer.parseInt(lineNumAndContext[0]),lineNumAndContext[1]);
        }

        br.close();

        Set<Map.Entry<Integer, String>> lines = lineNumMap.entrySet();
        for (Map.Entry<Integer, String> line : lines) {
            bw.write(line.getKey()+"."+line.getValue());
            bw.newLine();
        }

        bw.flush();
        bw.close();


    }



    public static void main(String[] args) throws Exception {
//        Demo4_BufferStream.byteBuffer();
//        Demo4_BufferStream.charBuffer();
//        Demo4_BufferStream.sortLineNum();

        Map<Integer,Integer> map = new HashMap<>();
        map.put(35,4);
        map.put(22,4);
        map.put(19,4);
        map.put(3,4);
        map.put(38,4);
        map.put(6,4);
        map.put(2,4);

        System.out.println(map);


    }


}
